/**
 *  matrix.h
 *  AwkwardEngine - Math
 *
 *  Date: 19/08/2013
 *
 *  Language: C++
 *
 *  @author Carl McCaffrey
 *
 */
#ifndef MATRIX_H
#define MATRIX_H

typedef struct _cMat{
	float entries[16];
} cMat;

/* Initialization */
inline cMat cMatIdentity(void);

/* Operations */
inline cMat cMatAdd(cMat mat1, cMat mat2);
inline cMat cMatSubtract(cMat mat1, cMat mat2);
inline cMat cMatMultiply(cMat mat1, cMat mat2);

inline cMat cMatTranspose(cMat mat);

inline cMat cMatTranslate(float x, float y, float z);
inline cMat cMatScale(float x, float y, float z);
inline cMat cMatRotateX(float rad);
inline cMat cMatRotateY(float rad);
inline cMat cMatRotateZ(float rad);
inline cMat cMatOrtho(float left, float right, float bottom, float top, float zNear, float zFar);
inline cMat cMatPerspective(float fov, float aspect, float zNear, float zFar);

#include "../../source/math/matrix.inl"

#endif // MATRIX_H